package com.community.utils;

import com.baomidou.mybatisplus.extension.service.IService;
import com.community.service.IGatherService;
import com.community.service.IOrdersService;
import com.community.service.IPayService;
import com.community.service.IPurchaseOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.text.SimpleDateFormat;
import java.util.Date;

@Component
public class NumberUtils {

    @Autowired
    private IPurchaseOrderService purchaseOrderService;

    @Autowired
    private IGatherService gatherService;

    @Autowired
    private IPayService payService;

    @Autowired
    private IOrdersService ordersService;

    public String getTypeNumber(String type) {

        StringBuffer buffer = new StringBuffer(type);

        // 当前日期 格式：yyyyMMdd
        Date now = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String date = sdf.format(now);
        buffer.append(date);

        // 根据类型获取对应设计单的最大的设计单编号
        String designId = "";
        switch (type) {
            case "100":
                //采购单编号
                designId = purchaseOrderService.getMaxDesignId();
                break;
            case "200":
                //入库单编号
                designId = gatherService.getMaxgatherId();
                break;
            case "400":
                //出库单编号
                designId = payService.getMaxprocedure();
                break;
            case "300":
                //出库单编号
                designId = ordersService.getMaxprocedure();
                break;
        }
        if(designId == null)

        {
            return buffer.append("0001").toString();
        }

        // 获取当前采购单编号的4位流水号  xxxYYYYMMDDxxxx
        String flowNumber = designId.substring(11);
        // 获取当前设计单编号的年份
        String year = designId.substring(3, 7);

        String number = "";
        if(year.equals(date.substring(0,4))) {
            int temp = Integer.parseInt(flowNumber);
            temp ++;
            // 补齐4位字符串
            String newFlowNumber = String.format("%04d", temp);
            number = buffer.append(newFlowNumber).toString();
        } else {
            number = buffer.append("0001").toString();
        }
        return number;
    }

//    public String getTypeNumber2(String type) {
//        StringBuffer buffer = new StringBuffer(type);
//
//        // 当前日期 格式：yyyyMMdd
//        Date now = new Date();
//        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
//        String date = sdf.format(now);
//        buffer.append(date);
//
//        // 根据类型获取对应设计单的最大设计单编号
//        String designId = "";
//        switch (type) {
//            case "100":
//                // 采购单编号
//                designId = purchaseOrderService.getMaxDesignId();
//                break;
//            case "200":
//                // 入库单编号
//                designId = gatherService.getMaxgatherId();
//                break;
//            case "400":
//                // 库单编号
//                designId = payService.getMaxprocedure();
//                break;
//        }
//
//        if (designId == null) {
//            return buffer.append("0001").toString();
//        }
//
//        String number = "";
//        // 检查字符串长度是否足够
//        if (designId.length() >= 16) {
//            // 获取当前采购单编号的4位流水号
//            String flowNumber = designId.substring(11, 15);
//            // 获取当前设计单编号的年份
//            String year = designId.substring(3, 7);
//
//            // 获取当前年份
//            SimpleDateFormat yearFormat = new SimpleDateFormat("yyyy");
//            String currentYear = yearFormat.format(now);
//
//            if (year.equals(currentYear)) {
//                int temp = Integer.parseInt(flowNumber);
//                temp++;
//                // 补齐4位流水号
//                String newFlowNumber = String.format("%04d", temp);
//                number = buffer.append(newFlowNumber).toString();
//            } else {
//                // 年份不匹配，重新生成流水号
//                number = buffer.append("0001").toString();
//            }
//        } else {
//            // 处理字符串长度不够的情况
//            number = buffer.append("0001").toString();
//        }
//
//        return number;
//    }
}
